	/**
	 * EnergieRenouvelable est la classe représentant une énergie renouvelable
	 * @author smathomeutbm
	 * @version 1.0
	 */
public class EnergieRenouvelable extends SourceEnergie implements Runnable{

    private ParametreExterieur source;
    
	/**
     * Constructeur par défaut
     */
    public EnergieRenouvelable() {
        super();
        source = null;
    }
    
	/**
     * Constructeur avec paramètre extérieur
     * @param pe Paramèter extérieur
     */
    public EnergieRenouvelable(ParametreExterieur pe) {
        super();
        source = pe;
    }
    
	/**
     * Constructeur avec paramètres
     * @param pe Paramèter extérieur
     * @param nom Nom de l'énergie renouvelable
     * @param etat Etat de l'énergie renouvelable
     */
    public EnergieRenouvelable(String nom, boolean etat, ParametreExterieur pe) {
        super(nom,etat);
        source = pe;
    }

	/**
     * Changer le paramètre extérieur
     * @param pe Nouveau paramètre extérieur
     */
    public void setSource(ParametreExterieur pe) {
        source = pe;
    }
    
	/**
     * Récupérer le paramètre extérieur de l'énergie
     * @return Le paramètre extérieur
     */
    public ParametreExterieur getSource() {
        return source;
    }

	/**
     * Vérifie la valeur du paramètre extérieur et l'état de l'énergie
     * Exécute un thread
     * @return True sur l'opération s'est bien passé
     */
    public boolean verifierValeur() {
		final Thread t = new Thread(this);
		t.start();
		return true;
	}

	public void run() {
	    while(true) {
            if(source.getValeurExt()!=0 && !super.getEtat())
                super.modifierEtat();
            if(source.getValeurExt()==0 && super.getEtat())
                super.modifierEtat();
       }
    }
    
	/**
     * Chaîne XML correspondant à l'énergie renouvelable
     * @return Chaîne xml
     */
    public String xml(){
    	return "\t\t<renouvelable name=\""+super.getNomEnergie()+"\" etat=\""+super.getEtat()+"\" />\n";
    }
}
